/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evangelion.core.daoImpl;

import com.evangelion.core.bean.Profesor;
import com.evangelion.core.bean.Seccione;
import com.evangelion.core.dao.ProfesorDao;

import java.util.List;
import javax.persistence.Query;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author Usuario
 */
@Component
@Transactional
public class ProfesorDaoImpl extends AbstractDAO implements ProfesorDao {

    @Override
    public List<Profesor> searchByNifNombre(Seccione seccion, String valor, int start, int max) {

        if (null == valor) {
            valor = "";
        }

        System.out.println("WINKI:" + valor + " seccion:" + seccion);

        Query q = em.createQuery("SELECT a from Profesor a WHERE (a.nif LIKE :valorParametro or a.nombres like :valorParametro or a.apellidos like :valorParametro)  AND a.seccion=:seccion");

        q.setParameter("valorParametro", "%" + valor + "%");
        q.setParameter("seccion", seccion);
        q.setFirstResult(start);
        q.setMaxResults(max);

        System.out.println(start + " " + max);
        return q.getResultList();
    }

    @Override
    public int countPage(Seccione seccion, String valor) {
        if (null == valor) {
            valor = "";
        }
        Query q = em.createQuery("SELECT COUNT(a.id) from Profesor a WHERE (a.nif LIKE :valorParametro or a.nombres like :valorParametro or a.apellidos like :valorParametro) AND a.seccion=:seccion");

        q.setParameter("valorParametro", "%" + valor + "%");
        q.setParameter("seccion", seccion);
        return ((Number) q.getSingleResult()).intValue();
    }

    @Override
    public void save(Profesor profesor) {
        super.save(profesor);
    }

    @Override
    public Profesor findObjByParam(String parametro, String valor) {
        return (Profesor) findObjByParam(Profesor.class, parametro, valor);
    }
}
